/**
 * 代理模式（委托模式）：为其他对象提供一种代理以控制对这个对象的访问
 * 代理模式有以下几个角色
 * 1、抽象主题角色 可以是抽象类、接口、也可以是普通的业务类
 * 2、具体主题角色 被代理角色，执行具体的业务逻辑
 * 3、代理主题角色 负责应用具体主题角色，把所有抽象主题角色类定义的方法限制委托给真正的主题角色实现，并在真实主题角色处理前后做预处理和善后工作
 *
 * 代理模式的扩展
 * 1、普通代理
 *    直接访问代理
 * 2、强制代理
 *    如果直接访问目标对象，是不可以的，必须通过指定的代理来访问对象
 *
 * 代理模式的特点
 * 具体主题角色和代理主题角色必须都实现相同的抽象主题角色
 * Created by houjinxin on 2016/11/27.
 */
package com.designPatterns.proxy;